package com.nuanshui.heatedloan.userinfo.facade;

import com.nuanshui.heatedloan.userinfo.model.User;
import com.nuanshui.heatedloan.userinfo.model.UserInfo;
import com.nuanshui.heatedloan.userinfo.vo.UserVo;
import org.springframework.security.core.userdetails.UserDetailsService;

import java.util.List;

/**
 * Created by zxh on 2017/2/11.
 */
public interface UserQueryService extends UserDetailsService {

    /**
     * 通过主键查找用户
     * @param userId
     * @return
     */
    User load(String userId);

    /**
     * 用户是否已注册
     */
    User loadByLoginName(String loginname);

    /**
     * 通过手机号获取用户
     * @param phone
     * @return
     */
    User loadUserByPhone(String phone);

    /**
     * 获取 简要用户信息
     * @param userId
     * @return
     */
    UserInfo  loadSimplerUserInfo(String userId);

    /**
     * 获取用户信息
     * @param userId
     * @return
     */
    UserInfo  getUserInfo(String userId);

    /**
     * 获取用户信息 by userId
     * @param userId
     * @return
     */
    UserInfo loadUserInfo(String userId);

    /**
     * 根据用户id获取用户
     * @param userIds
     * @return
     */
    List<User> loadUsers(List<Long> userIds);

    /**
     * 加载用户信息
     * @param userIds
     * @return
     */
    List<UserInfo> loadUserInfos(List<Long> userIds);
    /**
     * 根据混淆的用户id获取用户
     * @param userIds
     * @return
     */
    List<User> loadUsers(String ... userIds);
    /**
     * 根据手机号获取用户
     * @param phones
     * @return
     */
    List<User> loadUsersByPhone(List<String> phones);

    /**
     * 获取注册的所有用户
     * @param
     * @author guohao
     * @date 2016年3月30日 上午10:19:04
     */
    List<User> loadAllUsers();

    /**
     * 根据名字模糊查找用户
     * @author Gonzo
     * @date 2016年12月22日下午6:15:31
     * @param userName
     * @return
     * @since 1.0.0
     */
    List<UserVo> findListByName(String userName);

    /**
     * 根据用户id批量获取手机号
     * @param  userIds
     * @author guohao
     * @date 2016年12月30日 下午2:16:17
     * @since $
     */
    List<String> loadPhoneListByIds(List<String>  userIds);

    /**
     * 获取所有的用户id
     * @param @return
     * @author guohao
     * @date 2017年1月16日 下午6:26:29
     * @since $
     */
    List<String> loadAllUserIds();

}
